package org.japo.java.entities;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;

/**
 *
 * @author José A. Pacheco Ondoño - joanpaon@gmail.com
 */
public class Cita implements Serializable {

    // Identificadores de las propiedades
    public static final String PROP_NIF = "nif";
    public static final String PROP_NOMBRE = "nombre";
    public static final String PROP_APELLIDOS = "apellidos";
    public static final String PROP_MATRICULA = "matricula";
    public static final String PROP_TIPO = "tipo";
    public static final String PROP_FECHA = "fecha";
    public static final String PROP_HORA = "hora";

    // Propiedades
    private Nif nif;
    private String nombre;
    private String apellidos;
    private String matricula;
    private String tipo;
    private Fecha fecha;
    private Hora hora;

    public Cita() {
        nif = new Nif();
        nombre = "nombre";
        apellidos = "apellidos";
        matricula = "AAA-0000";
        tipo = "turismo";
        fecha = new Fecha();
        hora = new Hora();
    }

    // Soporte para el cambio de propiedad
    private final transient PropertyChangeSupport propertyChangeSupport
            = new java.beans.PropertyChangeSupport(this);

    public Nif getNif() {
        return nif;
    }

    public void setNif(Nif nif) {
        org.japo.java.entities.Nif oldNif = this.nif;
        this.nif = nif;
        propertyChangeSupport.firePropertyChange(PROP_NIF, oldNif, nif);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        java.lang.String oldNombre = this.nombre;
        this.nombre = nombre;
        propertyChangeSupport.firePropertyChange(PROP_NOMBRE, oldNombre, nombre);
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        java.lang.String oldApellidos = this.apellidos;
        this.apellidos = apellidos;
        propertyChangeSupport.firePropertyChange(PROP_APELLIDOS, oldApellidos, apellidos);
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        java.lang.String oldMatricula = this.matricula;
        this.matricula = matricula;
        propertyChangeSupport.firePropertyChange(PROP_MATRICULA, oldMatricula, matricula);
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        java.lang.String oldTipo = this.tipo;
        this.tipo = tipo;
        propertyChangeSupport.firePropertyChange(PROP_TIPO, oldTipo, tipo);
    }

    public Fecha getFecha() {
        return fecha;
    }

    public void setFecha(Fecha fecha) {
        org.japo.java.entities.Fecha oldFecha = this.fecha;
        this.fecha = fecha;
        propertyChangeSupport.firePropertyChange(PROP_FECHA, oldFecha, fecha);
    }

    public Hora getHora() {
        return hora;
    }

    public void setHora(Hora hora) {
        org.japo.java.entities.Hora oldHora = this.hora;
        this.hora = hora;
        propertyChangeSupport.firePropertyChange(PROP_HORA, oldHora, hora);
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }

}
